﻿using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using AMatysiak.Converters;

namespace AMatysiakTest.Converters
{
    [TestClass]
    public class ChangeAmountToWordsTest
    {
        public ChangeAmountToWordsTest()
        {
            ChangeAmountToWords.space = " ";
        }

        [TestMethod]
        public void emptyAmount()
        {
            string text = ChangeAmountToWords.ToWords("");
            Assert.AreEqual("Zero Złotych 00/100", text);
        }

        [TestMethod]
        public void zeroAmount()
        {
            string text = ChangeAmountToWords.ToWords(0);
            Assert.AreEqual("Zero Złotych 00/100", text);
        }

        [TestMethod]
        public void twoAmountAsInt()
        {
            string text = ChangeAmountToWords.ToWords(2);
            Assert.AreEqual("Dwa Złote 00/100", text);
        }

        [TestMethod]
        public void twoAmountAsDouble()
        {
            string text = ChangeAmountToWords.ToWords(2.00);
            Assert.AreEqual("Dwa Złote 00/100", text);
        }

        [TestMethod]
        public void twoAmountAsString()
        {
            string text = ChangeAmountToWords.ToWords("2");
            Assert.AreEqual("Dwa Złote 00/100", text);
        }

        [TestMethod]
        public void withRest()
        {
            string text = ChangeAmountToWords.ToWords("2.55");
            Assert.AreEqual("Dwa Złote 55/100", text);
        }

        [TestMethod]
        public void zl1()
        {
            string text = ChangeAmountToWords.ToWords(1);
            Assert.AreEqual("Jeden Złoty 00/100", text);
        }

        [TestMethod]
        public void zl5()
        {
            string text = ChangeAmountToWords.ToWords("5");
            Assert.AreEqual("Pięć Złotych 00/100", text);
        }

        [TestMethod]
        public void zl11()
        {
            string text = ChangeAmountToWords.ToWords("11");
            Assert.AreEqual("Jedenaście Złotych 00/100", text);
        }

        [TestMethod]
        public void zl21()
        {
            string text = ChangeAmountToWords.ToWords("21");
            Assert.AreEqual("Dwadzieścia Jeden Złoty 00/100", text);
        }

        [TestMethod]
        public void zl22()
        {
            string text = ChangeAmountToWords.ToWords("22");
            Assert.AreEqual("Dwadzieścia Dwa Złote 00/100", text);
        }

        [TestMethod]
        public void zl25()
        {
            string text = ChangeAmountToWords.ToWords("25");
            Assert.AreEqual("Dwadzieścia Pięć Złotych 00/100", text);
        }

        [TestMethod]
        public void zl100()
        {
            string text = ChangeAmountToWords.ToWords("100.10");
            Assert.AreEqual("Sto Złotych 10/100", text);
        }

        [TestMethod]
        public void zl200()
        {
            string text = ChangeAmountToWords.ToWords("200");
            Assert.AreEqual("Dwieście Złotych 00/100", text);
        }

        [TestMethod]
        public void zl111()
        {
            string text = ChangeAmountToWords.ToWords("111");
            Assert.AreEqual("Sto Jedenaście Złotych 00/100", text);
        }

        [TestMethod]
        public void zl1111()
        {
            string text = ChangeAmountToWords.ToWords("1111");
            Assert.AreEqual("Tysiąc Sto Jedenaście Złotych 00/100", text);
        }

        [TestMethod]
        public void zl2111()
        {
            string text = ChangeAmountToWords.ToWords("2111");
            Assert.AreEqual("Dwa Tysiące Sto Jedenaście Złotych 00/100", text);
        }

        [TestMethod]
        public void zl2222()
        {
            string text = ChangeAmountToWords.ToWords("2222");
            Assert.AreEqual("Dwa Tysiące Dwieście Dwadzieścia Dwa Złote 00/100", text);
        }

        [TestMethod]
        public void zl5550()
        {
            string text = ChangeAmountToWords.ToWords("5550");
            Assert.AreEqual("Pięć Tysięcy Pięćset Pięćdziesiąt Złotych 00/100", text);
        }

        [TestMethod]
        public void zl10000()
        {
            string text = ChangeAmountToWords.ToWords("10000");
            Assert.AreEqual("Dziesięć Tysięcy Złotych 00/100", text);
        }

        [TestMethod]
        public void zl15200()
        {
            string text = ChangeAmountToWords.ToWords("15200");
            Assert.AreEqual("Piętnaście Tysięcy Dwieście Złotych 00/100", text);
        }

        [TestMethod]
        public void zl355347()
        {
            string text = ChangeAmountToWords.ToWords("355347.77");
            Assert.AreEqual("Trzysta Pięćdziesiąt Pięć Tysięcy Trzysta Czterdzieści Siedem Złotych 77/100", text);
        }
    }
}
